﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QuanLyBepAnTuThien
{
    public partial class UcChiTietTo : UserControl
    {
        public UcChiTietTo()
        {
            InitializeComponent();
        }
        connect cn = new connect();
        //bool them = true;
        string manv=null;
        private void Loaddata()
        {
            gridControlChiTiet.DataSource = cn.getDataTable("tblChiTietQuanLyTo_DS");
            cobHoTen.DataSource = cn.getDataTable("tblNhanVien_DS");
            cobHoTen.DisplayMember = "HoTen";
            cobHoTen.ValueMember = "MaNV";

            cobTo.DataSource = cn.getDataTable("tblTo_DS");
            cobTo.DisplayMember = "TenTo";
            cobTo.ValueMember = "MaTo";
            gridViewDSChiTiet.FocusedRowHandle = 0;
        }

        private void UcChiTietTo_Load(object sender, EventArgs e)
        {
            Loaddata();
            btnThem.Enabled = true;
            //btnSua.Enabled = true;
            btnXoa.Enabled = true;
            btnLuu.Enabled = false;
            grbChiTiet.Enabled = false;
        }

        private void gridViewDSChiTiet_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                cobHoTen.SelectedValue = gridViewDSChiTiet.GetFocusedRowCellDisplayText("MaNV");
                cobTo.SelectedValue = gridViewDSChiTiet.GetFocusedRowCellDisplayText("MaTo");
                dtBatDau.Text = gridViewDSChiTiet.GetFocusedRowCellDisplayText("NgayBatDau");
                dtKetThuc.Text = gridViewDSChiTiet.GetFocusedRowCellDisplayText("NgayKetThuc");
            }
            catch
            {
            }
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            grbChiTiet.Enabled = true;
            //them = true;
            gridControlChiTiet.Enabled = false;
            btnThem.Enabled = false;
            //btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            cobHoTen.Focus();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            grbChiTiet.Enabled = true;
            //them = false;
            btnThem.Enabled = false;
            //btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            gridControlChiTiet.Enabled = false;
            cobHoTen.Focus();
        }

        private void btnReLoad_Click(object sender, EventArgs e)
        {
            grbChiTiet.Enabled = false;
            //them = true;
            btnThem.Enabled = true;
           // btnSua.Enabled = true;
            btnXoa.Enabled = true;
            btnLuu.Enabled = false;
            gridControlChiTiet.Enabled = false;
            gridControlChiTiet.Enabled = true;
            Loaddata();
        }
        private bool KiemTraHoTen()
        {
            SqlCommand cmd = new SqlCommand("tblNhanVien_KiemTraTenNV", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("tennv", SqlDbType.NVarChar)).Value = cobHoTen.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                return true;                
            }
            return false;
        }
        private bool KiemTraTenTo()
        {
            SqlCommand cmd = new SqlCommand("tblTo_KiemTraTenTo", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("tento", SqlDbType.NVarChar)).Value = cobTo.Text;
            object to = cmd.ExecuteScalar();
            if (Convert.ToInt32(to) > 0)
            {
                return true;
            }
            return false;
            
        }
        private bool KiemTraNhiemKy()
        {
            SqlCommand cmd = new SqlCommand("tblChiTietQuanLy_LayNgayBatDau", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("to",SqlDbType.Int)).Value = cobTo.SelectedValue;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            DateTime dtime;
            int ngay = dtBatDau.Value.Day;
            int thang = dtBatDau.Value.Month;
            int nam = dtBatDau.Value.Year;
            int nam1, thang1, ngay1;
            if (dt.Rows.Count <=0)
            {
                manv = "";
                return true;
            }
            else
            {
                manv = dt.Rows[0]["MaNV"].ToString();
                ngay1 = int.Parse(dt.Rows[0]["ngay"].ToString());
                thang1 = int.Parse(dt.Rows[0]["thang"].ToString());
                nam1 = int.Parse(dt.Rows[0]["nam"].ToString());
                
            }
            
            //if (ngay <= ngay1 && thang <= thang1 && nam < nam1)
            if(nam*12*31+thang*31+ngay<=nam1*12*31+thang1*31+ngay1)
            {
                return false;
            }
            
            return true;
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {           
            if (KiemTraHoTen() == false)
            {
                MessageBox.Show("Họ tên: "+cobHoTen.Text+" không phải là nhân viên. Vui lòng kiểm tra lại","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                cobHoTen.DataSource = cn.getDataTable("tblNhanVien_DS");
                cobHoTen.DisplayMember = "HoTen";
                cobHoTen.ValueMember = "MaNV";
                cobHoTen.Focus();
            }
            else if (KiemTraTenTo() == false)
            {
                MessageBox.Show("Tổ: " + cobTo.Text + " hiện tại chưa có. Vui lòng kiểm tra lại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobTo.DataSource = cn.getDataTable("tblTo_DS");
                cobTo.DisplayMember = "TenTo";
                cobTo.ValueMember = "MaTo";
                cobTo.Focus();
            }
            else if (KiemTraNhiemKy() == false)
            {
                MessageBox.Show("Ngày bắt đầu không đúng, vui lòng kiểm tra lại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtBatDau.Focus();
            }
            else
            {
                DateTime dt = dtBatDau.Value.AddDays(-1);
                SqlCommand cmd = new SqlCommand("tblChiTietQuanLy_Them",cn.ketnoi());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("mato",SqlDbType.Int)).Value=cobTo.SelectedValue;
                cmd.Parameters.Add(new SqlParameter("ngaybd",SqlDbType.DateTime)).Value=dtBatDau.Value;
                cmd.Parameters.Add(new SqlParameter("manv", SqlDbType.VarChar)).Value = cobHoTen.SelectedValue;
                cmd.Parameters.Add(new SqlParameter("ngaykt", SqlDbType.DateTime)).Value = dt;
                cmd.Parameters.Add(new SqlParameter("manv1", SqlDbType.VarChar)).Value = manv;
                cmd.ExecuteNonQuery();
                btnReLoad_Click(sender, e);
            }
        }

        private void gridViewDSChiTiet_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle == gridViewDSChiTiet.FocusedRowHandle)
            {
                e.Appearance.BackColor = Color.DeepSkyBlue;
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            string machitiet =gridViewDSChiTiet.GetRowCellValue(gridViewDSChiTiet.FocusedRowHandle,"MaChiTiet").ToString();
            if (MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (machitiet == "")
                {
                    MessageBox.Show("Chưa có dữ liệu được chọn để xoa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    UcChiTietTo_Load(sender, e);
                }
                else
                {
                    SqlCommand cmd = new SqlCommand("tblChiTietQuanLy_Xoa", cn.ketnoi());
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("machitiet", SqlDbType.Int)).Value = machitiet;
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("Bạn đã xóa thành công","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                        btnReLoad_Click(sender, e);
                    }

                }
            }
        }

        private void txtTim_TextChanged(object sender, EventArgs e)
        {
            if (txtTim.Text == "" || txtTim.Text == "Nhập từ khóa tìm kiếm")
            {
                UcChiTietTo_Load(sender, e);
            }
            else
            {
                SqlCommand cmd = new SqlCommand("tblChiTietQuanLy_Tim", cn.ketnoi());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("tim", SqlDbType.NVarChar)).Value = txtTim.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                gridControlChiTiet.DataSource = dt;
            }
        }

        private void txtTim_Enter(object sender, EventArgs e)
        {
            if (txtTim.Text == "Nhập từ khóa tìm kiếm")
            {
                txtTim.Text = "";
            }
        }

        private void txtTim_Leave(object sender, EventArgs e)
        {
            if (txtTim.Text == "" || txtTim.Text != "")
            {
                txtTim.Text = "Nhập từ khóa tìm kiếm";
            }
        }        
     
    }
}
